package com.yuju.hotel.service.impl;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.yuju.common.core.dao.IBaseDao;
import com.yuju.common.core.service.AbstractBaseService;
import com.yuju.hotel.dao.IRoomDao;
import com.yuju.hotel.dao.entity.Room;
import com.yuju.hotel.model.RoomModel;
import com.yuju.hotel.service.IRoomService;
import com.yuju.util.Utils;
/**
 * 
 * 类名：RoomServiceImpl  <br />
 *
 * 功能：
 *
 * @author : zhousc <br />
 * @Date : 2017年11月27日 下午3:30:39  <br />
 * @version : 1.1 <br />
 */
@Service
public class RoomServiceImpl extends AbstractBaseService<RoomModel, Room, String> implements IRoomService{

	@Autowired
	private IRoomDao roomDao;
	
	@Override
	public IBaseDao<RoomModel, Room, String> getDao() {
		// TODO Auto-generated method stub
		return roomDao;
	}
	/**
	 * 
	 * 功能: <br/>新增房间
	 * 
	 * 重写：zhousc <br/>
	 * 
	 * @Date ：2017年11月27日 下午3:30:57<br/>
	 * 
	 * @param roomModel
	 * @return <br/>
	 * @see com.yuju.common.core.service.AbstractBaseService#save(java.lang.Object)
	 */
	@Override
	public int save(RoomModel roomModel){
		roomModel.setId(Utils.getUUID());
		roomModel.setGmtCreate(new Date());
		roomModel.setGmtModified(new Date());
		return this.getDao().saveSelective(roomModel);
	}
	/**
	 * 
	 * 功能: <br/>房间更新
	 * 
	 * 重写：zhousc <br/>
	 * 
	 * @Date ：2017年11月27日 下午3:31:13<br/>
	 * 
	 * @param roomModel
	 * @return <br/>
	 * @see com.yuju.common.core.service.AbstractBaseService#updateSelective(java.lang.Object)
	 */
	@Override
	public int updateSelective(RoomModel roomModel){
		roomModel.setGmtModified(new Date());
		return this.getDao().updateSelective(roomModel);
	}
	
	/**
	 * 
	 * 功能: 远期房态：按房型排序列表<br/>
	 * 
	 * 重写：zhousc <br/>
	 * 
	 * @Date ：2017年12月6日 下午7:56:49<br/>
	 * 
	 * @param roomModel
	 * @return <br/>
	 * @see com.yuju.hotel.service.IRoomService#selectRoomByRoomType(com.yuju.hotel.model.RoomModel)
	 */
	@Override
	public List<RoomModel> selectRoomByRoomType(RoomModel roomModel) {
		// TODO Auto-generated method stub
		return convert(roomDao.selectRoomByRoomType(roomModel));
	}
	/**
	 * 
	 * 功能:重名验证 <br/>
	 * 
	 * 重写：zhousc <br/>
	 * 
	 * @Date ：2017年12月14日 上午10:44:24<br/>
	 * 
	 * @param roomModel
	 * @return <br/>
	 * @see com.yuju.hotel.service.IRoomService#selectByName(com.yuju.hotel.model.RoomModel)
	 */
	@Override
	public boolean selectByName(RoomModel roomModel) {
		//定义返回值
		boolean result = false;
		//装载数据查询数据库
		RoomModel model = new RoomModel();
		model.setRoomCode(roomModel.getRoomCode());
		model.setHotelId(roomModel.getHotelId());
		model.setFloorId(roomModel.getFloorId());
		//修改时验证重名
		if (Utils.isNotNull(roomModel.getId())) {
			RoomModel roomModel1 = convert(this.getDao().getObj(roomModel.getId()));
			if (roomModel.getRoomCode().equals(roomModel1.getRoomCode())) {
			        result = true;
			    } else {
			   	 	Map<Object, Object> beanMap = getBeanMap(model);
			        List<RoomModel> list = this.getDao().list(beanMap);
			        if (list.size() == 0) {
			            result = true;
			        }
			    }
		//新增验证重名
		}else {
			Map<Object, Object> beanMap = getBeanMap(model);
			    List<RoomModel> list = this.getDao().list(beanMap);
			    if (list.size() == 0) {
			        result = true;
			    }
			}
		return result;
	}
	
	@Override
	public int updateByIds(RoomModel roomModel){
		return roomDao.updateByIds(roomModel);
	}
	
}
